import {routerRedux} from 'dva/router';
import {notification} from 'antd';
import axios from 'axios';

axios.interceptors.request.use((config) => {
    config.headers.Authorization = `Bearer ${sessionStorage.getItem('access_token')}`;
    return config;
});
axios.interceptors.response.use((response) => {
    if (response.data) {
        if (response.headers.authorization) {
            let access_token = response.headers.authorization;
            if (access_token) {
                access_token = access_token.replace('Bearer ', '');
                sessionStorage.setItem('access_token', access_token);
            }
        }
        return response.data;
    } else {
        return response;
    }
}, (error) => {
    if (error.response) {
        notification.error({
            message: '提示',
            description: error.response.data.message,
        });
        if (error.response.status === 401) {
            sessionStorage.clear();
            routerRedux.push('/user/login');
        }

    }
    console.log(error)
    if (error.response) {
        return error.response.data;
    } else {
        return error;
    }
});

// function checkStatus(response) {
//   if (response.status >= 200 && response.status < 300) {
//     return response;
//   }
//   notification.error({
//     message: `请求错误 ${response.status}: ${response.url}`,
//     description: response.statusText,
//   });
//   const error = new Error(response.statusText);
//   error.response = response;
//   throw error;
// }

/**
 * Requests a URL, returning a promise.
 *
 * @param  {string} url       The URL we want to request
 * @param  {object} [options] The options we want to pass to "fetch"
 * @return {object}           An object containing either "data" or "err"
 */
export default axios;
// const defaultOptions = {
//   credentials: 'include',
// };
// const newOptions = { ...defaultOptions, ...options };
// if (newOptions.method === 'POST' || newOptions.method === 'PUT') {
//   newOptions.headers = {
//     Accept: 'application/json',
//     'Content-Type': 'application/json; charset=utf-8',
//     ...newOptions.headers,
//   };
//   newOptions.body = JSON.stringify(newOptions.body);
// }
//
// return fetch(url, newOptions)
//   .then(checkStatus)
//   .then(response => response.json())
//   .catch((error) => {
//     if (error.code) {
//       notification.error({
//         message: error.name,
//         description: error.message,
//       });
//     }
//     if ('stack' in error && 'message' in error) {
//       notification.error({
//         message: `请求错误: ${url}`,
//         description: error.message,
//       });
//     }
//     return error;
//   });

